package com.cskaoyan.interfaces;

/*
        教练和运动员案例

        乒乓球运动员和篮球运动员。

        乒乓球教练和篮球教练。

        为了出国交流，跟乒乓球相关的人员都需要学习英语。
        请用所学知识：
        分析，这个案例中有哪些抽象类，哪些接口，哪些具体类

    乒乓球运动员
        属性：name, age, salary
        行为：eat(), sleep(), train(), match(), learnEnglish();
    乒乓球教练
        属性：name, age, salary,bonus
        行为：eat(), sleep(), teach(), learnEnglish()
    足球运动员
        属性：name, age, salary
        行为：eat(), sleep(), train(), match()
    足球教练
        属性：name, age, salary, bonus
        行为：eat(), sleep(), teach()

    抽取共性：
       1. 定义Human类；来描述所有的运动员和教练员作为人所具有的属性和行为的共性
          属性: name，age，salary
          行为: eat(), sleep()

       2. 站在运动员的角度，可以定义类描述所有的运动员
           abstract Athlete extends Human {

                abstract train();
                abstract match();

           }
           但是，对于不同的运动员，他们训练和比赛的内容并不相同，所以train(), match(), 都只能是
           抽象方法

      3. 站在教练员的角度，描述所有的教练
         abstract Coach extends Human {
              bonus
             abstract teach()
         }
         但是，对于不同类型的教练，他们教授的内容不同，所以teach()，只能是抽象方法


         interface SpecialSkill {
            void learnEnglish();
         }


      4. 分别定义乒乓求运动员和教练员，以及足球运动员和教练员
          TableTennisAthlete extends Athlete implements SpecialSkill
          TableTennisCoach extends Coach implements SpecialSkill
          FootballAthlete extends Athlete
          FootballCoach extends Coach

 */
public class Demo6Exercise {
}
